//#include "cybertron/node/NodeBase.hpp"
//#include "cybertron/core/CoreVersion.hpp"
//#include "cybertron/core/Log.hpp"
//#include "cybertron/core/UtilConsole.hpp"
//#include "cybertron/core/logServer.hpp"
//#include "cybertron/core/SimOneEnv.hpp"
//#include "cybertron/node/StartupArguments.hpp"
//#include "cybertron/core/UtilUuidxx.hpp"
//#include <iostream>
//#include <fstream>
//#include <string>
//
//CYBERTRON_BEGIN
//NodeBaseEx* NodeBaseEx::mInstance = nullptr;
//
//NodeBaseEx::NodeBaseEx() {
//	SimOneEnv::GetInstance().Init();
//}
//
//NodeBaseEx::~NodeBaseEx() {
//}
//CybertronCoreAPI std::string NodeBaseEx::getVersionOnCore(const std::string& moduleName, const std::string& version)
//{
//	try
//	{
//		nlohmann::json coreVersion = nlohmann::json::parse(cybertron::getCoreVersion());
//		nlohmann::json information;
//		information["name"] = moduleName;
//		information["version"] = version;
//
//		nlohmann::json dependence;
//		dependence.push_back(coreVersion);
//		information["dependence"] = dependence;
//
//		return information.dump();
//	}
//	catch (...)
//	{
//		logError("Unknown errors when parsing json");
//	}
//
//	return "";
//}
//
//CybertronCoreAPI std::string NodeBaseEx::getVersionOnDependence(const std::string& moduleName, const std::string& version, const std::string& dependenceJson)
//{
//	try
//	{
//		nlohmann::json coreVersion = nlohmann::json::parse(cybertron::getCoreVersion());
//		nlohmann::json information;
//		information["name"] = moduleName;
//		information["version"] = version;
//
//		nlohmann::json dependence;
//		dependence.push_back(dependenceJson);
//		information["dependence"] = dependence;
//
//		return information.dump();
//	}
//	catch (...)
//	{
//		logError("Unknown errors when parsing json");
//	}
//
//	return "";
//}
//
//bool NodeBaseEx::init( int argc, char* argv[])
//{
//	if (argc > 1 && std::string(argv[1]) == "--version")
//	{
//		getVerion();
//		return false;
//	}
//
//	if (!theStartupArguments().parse(argc, argv))
//	{
//		logError("Failed to parse node startup arguments.");
//		for (int i = 1; i < argc; ++i)
//		{
//			logError("Argument %d: %s", i, argv[i]);
//		}
//
//		return false;
//	}
//
//	mAppInfo.mAppId = theStartupArguments().getAppId();
//	mAppInfo.mAppName = theStartupArguments().getAppName();
//	if (parseArguments(argc, argv) != 0)
//	{
//		return false;
//	}
//
//	return true;
//
//}
//
//int NodeBaseEx::parseArguments(int argc, char* argv[])
//{
//	return 0;
//}
//
//CybertronCoreAPI bool NodeBaseEx::create()
//{
//	cybertron::setupLogFile(mAppInfo.mAppName);
//	UtilConsole::setTitle(mAppInfo.mAppId);
//	UtilConsole::setColor(EConsoleColor_Green, EConsoleColor_Black);
//
//	if (beforeRun() != 0)
//	{
//		return false;
//	}
//
//	run();
//
//	return true;
//}
//
///////////////////////////////////////////////////////////////////////////////////
//
//NodeBase* NodeBase::mInstance = nullptr;
//
//CybertronCoreAPI std::string NodeBase::getVersionOnCore(const std::string& moduleName, const std::string& version)
//{
//	try
//	{
//		nlohmann::json coreVersion = nlohmann::json::parse(cybertron::getCoreVersion());
//		nlohmann::json information;
//		information["name"] = moduleName;
//		information["version"] = version;
//
//		nlohmann::json dependence;
//		dependence.push_back(coreVersion);
//		information["dependence"] = dependence;
//
//		return information.dump();
//	}
//	catch (...)
//	{
//		logError("Unknown errors when parsing json");
//	}
//
//	return "";
//}
//
//CybertronCoreAPI std::string NodeBase::getVersionOnDependence(const std::string& moduleName, const std::string& version, const std::string& dependenceJson)
//{
//	try
//	{
//		nlohmann::json coreVersion = nlohmann::json::parse(cybertron::getCoreVersion());
//		nlohmann::json information;
//		information["name"] = moduleName;
//		information["version"] = version;
//
//		nlohmann::json dependence;
//		dependence.push_back(dependenceJson);
//		information["dependence"] = dependence;
//
//		return information.dump();
//	}
//	catch (...)
//	{
//		logError("Unknown errors when parsing json");
//	}
//
//	return "";
//}
//
//CybertronCoreAPI void NodeBase::init(const std::string& moduleName)
//{
//	mModuleName = moduleName;
//	cybertron::setupLogFile(mModuleName);
//
//	//mOSConfId = initOSConf();
//
//	SimOneEnv::GetInstance().Init();
//	mIsCloudEnv = SimOneEnv::GetInstance().IsCloudEnv();
//	SimOneEnv::GetInstance().GetConfigCenterInfo(mSimOneConfigCenterInfo);
//	SimOneEnv::GetInstance().GetCloundEnvInfo(mSimOneCloudEnvInfo);
//
//	char* computer_env = getenv("COMPUTER_ENV");
//	if (computer_env)
//	{
//		ComputerEnv::GetInstance().Init();
//		ComputerEnv::GetInstance().GetCpuEnvInfo(mCpuEnvInfo);
//		ComputerEnv::GetInstance().GetMemoryEnvInfo(mMemoryEnvInfo);
//		ComputerEnv::GetInstance().GetIPConfigEnvInfo(mDeviceIPInfos);
//		ComputerEnv::GetInstance().GetDiskInfo(mDiskInfos);
//	}
//}
//
//CybertronCoreAPI int NodeBase::setDisplay(int argc, char* argv[])
//{
//	UtilConsole::setTitle(mModuleName);
//	UtilConsole::setColor(EConsoleColor_Green, EConsoleColor_Black);
//
//	return 0;
//}
//
//CybertronCoreAPI int NodeBase::setupLog(int argc, char* argv[])
//{
//	return 0;
//}
//
//CybertronCoreAPI int NodeBase::parseArguments(int argc, char* argv[])
//{
//	if (!theStartupArguments().parse(argc, argv))
//	{
//		logError("Failed to parse node startup arguments.");
//		for (int i = 1; i < argc; ++i)
//		{
//			logError("Argument %d: %s", i, argv[i]);
//		}
//
//		return -1;
//	}
//
//	return 0;
//}
//
//CybertronCoreAPI int NodeBase::create(int argc, char* argv[])
//{
//	if (getVerion(argc, argv) != 0)
//	{
//		return -1;
//	}
//
//	if (setDisplay(argc, argv) != 0)
//	{
//		return -1;
//	}
//
//	if (setupLog(argc, argv) != 0)
//	{
//		return -1;
//	}
//
//	if (parseArguments(argc, argv) != 0)
//	{
//		return -1;
//	}
//
//	if (doMisc(argc, argv) != 0)
//	{
//		return -1;
//	}
//
//	run(argc, argv);
//
//	return 0;
//}
//
//std::string NodeBase::initOSConf()
//{
//	std::string confPath;
//
//#ifdef CYBERTRON_WIN
//	confPath = "c:/users/public/os.conf";
//#else
//	confPath = "/etc/os.conf";
//#endif
//
//	std::string guidString;
//
//	std::ifstream osConfReader(confPath);
//	if (!osConfReader.is_open())
//	{
//		UtilUuidxx::uuid uuid = UtilUuidxx::uuid::Generate();
//		guidString = uuid.ToString();
//
//		std::ofstream osConfWriter(confPath, std::ios::trunc);
//		osConfWriter << guidString;
//		osConfWriter.close();
//	}
//	else
//	{
//		osConfReader >> guidString;
//		osConfReader.close();
//	}
//
//	return guidString;
//}
//
//CYBERTRON_END